In [9]:
import pandas as pd

In [10]:
podatki = pd.read_csv(r'C:\Users\samo\Desktop\AnalizaPodatkov\Tabela.csv')
tekmovalci = pd.read_csv(r'C:\Users\samo\Desktop\AnalizaPodatkov\Tekmovalci.csv')

Za projekt analize podatkov pri predmetu programiranje 1 sem si izbral spletno stran Project Euler in analiziral podatke s te strani. Glavno kar me je zanimalo je, za katere naloge so najboljši reševalci potrebovali največ časa in katere naloge so najzahtevnejše in jih je do sedaj rešilo najmanj reševalcev, ter ali je mogoče med njimi najti kakšno povezavo. Za konec pa sem še želel vedeti kdo so najuspešnejši uporabniki na strani Project Euler.

S strani sem pobral podatke in sestavil 2 tabeli. Prva je tabela nalog, ki izgleda takole:


In [3]:
podatki.head(10)


Out[3]:
ID Objavljeno Ime Rešilo # Najhitrejši čas [s] Povprečni čas [s] Highscore #
0 277 6th February 2010, 01:00 am A Modified Collatz sequence 2194 1310 2908 20
1 278 13th February 2010, 05:00 am Linear Combinations of Semiprimes 673 1300 7231 20
2 279 20th February 2010, 09:00 am Triangles with integral sides and an integral ... 473 2439 12543 20
3 280 27th February 2010, 01:00 pm Ant and seeds 703 2720 17606 19
4 281 5th March 2010, 01:00 pm Pizza Toppings 611 1165 9394 20
5 282 12th March 2010, 05:00 pm The Ackermann function 669 3563 33814 20
6 283 19th March 2010, 09:00 pm Integer sided triangles for which the area/pe... 459 4139 40368 20
7 284 27th March 2010, 01:00 am Steady Squares 878 1817 10840 20
8 285 3rd April 2010, 05:00 am Pythagorean odds 807 823 9086 19
9 286 3rd April 2010, 05:00 am Scoring probabilities 1457 917 4951 20

Pri tem bi želel povedati, da v stolpcu Highscore # piše, koliko tekmovalcev je pri tej nalogi zapisanih v tabeli Fastest Solvers. Ker je stran Project Euler te podatke začela zbirati šele od 277 problema dalje, sem se tudi sam odločil da podatke poberem le za probleme od tega dalje. V stolpcu Povprečni čas pa je izračunan povprečen čas vseh reševalcev v tabeli Fastest Solvers.

Druga tabela, ki sem jo ustvaril pa je tabela vseh uporabnikov, ki so se kdajkoli uvrstili med najboljše reševalce posameznega problema. Za vsakega posebej sem seštel koliko točk je izbral in sicer po ključu: 101 - mesto. Poleg tega pa sem zbral tudi število prvih mest za posameznega tekmovalca. Skupaj imamo kar 2617 različnih imen.


In [19]:
len(tekmovalci)


Out[19]:
2617

In [18]:
tekmovalci.sort_values(['Točke'], ascending = [False]).head(20)


Out[18]:
Tekmovalec Točke Št. prvih mest
1191 x22 26444 17
1520 aleksey 25265 20
1762 uwi 22979 28
2236 Tepsi 19748 5
2449 Anton_Lunyov 18639 45
1059 utomaya 16490 0
2098 cmk 16218 0
894 djdolls 14995 0
1955 grechnik 14077 18
2567 DerekLedbetter 13978 0
2387 sergej.samborskij 13850 0
2159 umu 13444 0
843 triceps 12928 1
670 Lucy_Hedgehog 12197 3
1652 inamori 12119 0
2486 Min_25 11019 17
1300 RobertStanforth 10862 2
2495 wrongrook 10727 8
197 stoned 10281 0
576 quasisphere 9405 1

Tukaj imamo tabelo najuspešnejših uporabnikov strani Project Euler. Izmed 16 tekmovalcev, ki so do sedaj rešili vseh 566 nalog jih večino najdemo tudi v tej tabeli. Naj dodam, da tukaj kot najuspešnejši mislim najhitrejši tekmovalci. Seveda se najdejo tudi reševalci, ki so rešili veliko nalog, a so za te potrebovali več časa. Za zanimivost si poglejmo še tabelo sortirano po Št. prvih mest.


In [13]:
tekmovalci.sort_values(['Št. prvih mest'], ascending = [False]).head(20)


Out[13]:
Tekmovalec Točke Št. prvih mest
2449 Anton_Lunyov 18639 45
1762 uwi 22979 28
108 rng_58 2861 20
1520 aleksey 25265 20
1955 grechnik 14077 18
1191 x22 26444 17
2486 Min_25 11019 17
2241 xudyh 6207 13
187 Nabb 7273 9
2495 wrongrook 10727 8
1413 ariacas 5931 5
2049 hirose 6363 5
2236 Tepsi 19748 5
529 Mrrl 2453 4
670 Lucy_Hedgehog 12197 3
203 mclo 7343 3
470 endagorion 2153 3
1569 fagu 5065 3
1620 mpiotte 4283 3
540 stimmer 9095 2

Daleč najuspešnejši v tem pogledu je tekmovalec 'Anton_Lunyov', ki je kar 45 od 289 problemov rešil najhitreje.

Zanimalo me je, za kateri problem je kateri izmed tekmovalcev potreboval najmanj časa od trenutka objave pa do pravilno oddane rešitve. Najmanj časa je potreboval 'Min_25' pri problemu številka 551 in sicer samo 1 minuto. Problem sicer ni lahek kar lahko vidimo iz sosednjega stolpca, saj so ostali uporabniki potrebovali veliko več časa. Razlog za tako hiter čas je verjetno v tem, da je tekmovalec področje problema že dobro poznal.


In [6]:
podatki.sort_values(['Najhitrejši čas [s]']).head(10)


Out[6]:
ID Objavljeno Ime Rešilo # Najhitrejši čas [s] Povprečni čas [s] Highscore #
274 551 12th March 2016, 04:00 pm Sum of digits sequence 199 60 138575 100
24 301 11th September 2010, 04:00 pm Nim 3921 155 601 20
68 345 3rd September 2011, 04:00 pm Matrix Sum 3105 173 2305 48
216 493 13th December 2014, 04:00 pm Under The Rainbow 2197 186 6499 100
244 521 21st June 2015, 01:00 am Smallest prime factor 425 198 115633 100
152 429 26th May 2013, 04:00 am Sum of squares of unitary divisors 1414 254 12467 100
254 531 25th October 2015, 04:00 am Chinese leftovers 482 269 17275 100
214 491 30th November 2014, 10:00 am Double pandigital number divisible by 11 1056 309 13385 100
227 504 21st February 2015, 10:00 pm Square on the Inside 1428 316 7681 100
208 485 18th October 2014, 04:00 pm Maximum number of divisors 602 323 25590 100

Za naslednjo analizo bi nas zanimalni najslabše in najpočasneje reševani problemi, zato se bomo omejili le na naloge, pri katerih je v tabeli Fastest Solvers zapisanih vsaj 95 pa do 100 reševalcev.


In [21]:
maks_vzorec = podatki[podatki['Highscore #'] >= 95]
maks_vzorec.sort_values(['Rešilo #']).head(20)


Out[21]:
ID Objavljeno Ime Rešilo # Najhitrejši čas [s] Povprečni čas [s] Highscore #
279 556 17th April 2016, 07:00 am Squarefree Gaussian Integers 99 2619 1319219 99
218 495 27th December 2014, 10:00 pm Writing n as the product of k distinct positiv... 103 5783 14906364 100
276 553 26th March 2016, 10:00 pm Power sets of power sets 104 2501 1357256 100
264 541 3rd January 2016, 10:00 am Divisibility of Harmonic Number Denominators 105 6917 2253476 100
206 483 5th October 2014, 10:00 am Repeated permutation 107 7335 13617501 100
267 544 23rd January 2016, 07:00 pm Chromatic Conundrum 107 4235 1885110 100
277 554 3rd April 2016, 01:00 am Centaurs on a chess board 108 6342 950546 100
212 489 16th November 2014, 04:00 am Common factors between two sequences 112 3511 6669841 100
201 478 30th August 2014, 07:00 pm Mixtures 112 6873 14005452 100
252 529 10th October 2015, 10:00 pm 10-substrings 113 4867 1526782 100
217 494 20th December 2014, 07:00 pm Collatz prefix families 115 8780 9457908 100
269 546 7th February 2016, 01:00 am The Floor's Revenge 119 4576 1447425 100
270 547 14th February 2016, 04:00 am Distance of random points within hollow square... 120 7527 550023 100
265 542 9th January 2016, 01:00 pm Geometric Progression with Maximum Sum 123 2414 403194 100
237 514 3rd May 2015, 04:00 am Geoboard Shapes 124 1941 3177727 100
207 484 11th October 2014, 01:00 pm Arithmetic Derivative 128 3407 6726736 100
230 507 15th March 2015, 07:00 am Shortest Lattice Vector 128 1668 2624573 100
228 505 1st March 2015, 01:00 am Bidirectional Recurrence 128 2814 2668522 100
231 508 22nd March 2015, 10:00 am Integers in base i-1 129 2045 2093577 100
205 482 28th September 2014, 07:00 am The incenter of a triangle 129 4229 2293957 100

Če pogledamo le probleme, ki so v arhivu (torej ne gledamo na zadnjih 10 objavljenih) je najmanj tekmovalcev rešilo problem številka 556. A ta problem bi težko označili kot najtežjega saj je dokaj nov in je zadnji problem, ki je bil trenutno dodan v arhiv. Kandidata za najtežjo nalogo imamo verjetno pri nalogah s številkami 495, 483 in 478, ki so bile objavljene v drugi polovici leta 2014 pa jih je do sedaj rešilo le nekaj več kot 100 uporabnikov. Če bi podobno analizo delali nekaj let pozneje, bo verjetno zadnji izdan problem kandidat za najtežji problem, ki ga je Project Euler kdajkoli objavil. Problem 567 - https://projecteuler.net/problem=566 - je v 13 dnevih rešilo le 19 uporabnikov.

Da bi dobili bolj zanimivo tabelo 'Najtežjih problemov', bi si lahko izmislili funkcijo v odvisnosti od tega, koliko časa je minilo od objave problema in koliko uporabnikov ga je skupno rešilo. Dober kandidat bi bil verjetno kar: Število dni od objave / Število uporabnikov, ki je problem rešilo. Formulo pa bi lahko spreminjali toliko časa, dokler ne bi tudi dejansko dobili smiselne tabele.

Za konec pa si oglejmo še probleme, za katere je bil povprečni čas uporabnikov na tabeli Fastest Solvers najslabši.


In [9]:
podatki.sort_values(['Povprečni čas'], ascending = [False]).head(20)


Out[9]:
ID Objavljeno Ime Rešilo # Najhitrejši čas Povprečni čas Highscore #
218 495 27th December 2014, 10:00 pm Writing n as the product of k distinct positiv... 103 5783 14906364 100
201 478 30th August 2014, 07:00 pm Mixtures 112 6873 14005452 100
206 483 5th October 2014, 10:00 am Repeated permutation 107 7335 13617501 100
217 494 20th December 2014, 07:00 pm Collatz prefix families 115 8780 9457908 100
138 415 17th February 2013, 10:00 am Titanic sets 200 19864 7919161 100
225 502 7th February 2015, 04:00 pm Counting Castles 142 3506 6979665 100
207 484 11th October 2014, 01:00 pm Arithmetic Derivative 128 3407 6726736 100
212 489 16th November 2014, 04:00 am Common factors between two sequences 112 3511 6669841 100
222 499 25th January 2015, 10:00 am St. Petersburg Lottery 157 4173 6418646 100
162 439 6th October 2013, 04:00 am Sum of sum of divisors 176 2437 5070695 85
150 427 11th May 2013, 10:00 pm n-sequences 170 10859 4588029 100
161 438 29th September 2013, 01:00 am Integer part of polynomial equation's solutions 177 6121 3937419 93
176 453 4th January 2014, 04:00 pm Lattice Quadrilaterals 140 44681 3388575 80
213 490 23rd November 2014, 07:00 am Jumping frog 137 5223 3363137 100
237 514 3rd May 2015, 04:00 am Geoboard Shapes 124 1941 3177727 100
170 447 16th November 2013, 10:00 pm Retractions C 150 2071 3000875 89
151 428 19th May 2013, 01:00 am Necklace of circles 150 3724 2903792 100
228 505 1st March 2015, 01:00 am Bidirectional Recurrence 128 2814 2668522 100
173 450 15th December 2013, 07:00 am Hypocycloid and Lattice points 123 11136 2660523 61
230 507 15th March 2015, 07:00 am Shortest Lattice Vector 128 1668 2624573 100

In [ ]: